package com.pogs.runpogsrun.util;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.assets.AssetManager;
import com.badlogic.gdx.audio.Music;
import com.badlogic.gdx.audio.Sound;
import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.brashmonkey.spriter.Spriter;
import com.brashmonkey.spriter.player.SpriterPlayer;
import com.brashmonkey.spriter.xml.FileHandleSCMLReader;
import com.game.framework.utils.L;
public class Assets {
private static Assets instance;
public static Music currentMusic;
public AssetManager manager;
public SpriterPlayer player;
public SpriterLoader loader;
// singleton
public static Assets getInstance() {
if (instance == null) {
instance = new Assets();
}
return instance;
}
private Assets() {
super();
}
public void initialize() {
// pre load assets
manager = new AssetManager();
// load texture packs
manager.load("gfx/assets.pack", TextureAtlas.class);
//load spriter
loader = new SpriterLoader(true);
Spriter spriter = FileHandleSCMLReader.getSpriter(Gdx.files.internal("scml/pogs.scml"), loader);
player = new SpriterPlayer(spriter,0,loader);
player.setAnimation("idle", 1, 10);
}
public <T> T get(String name) {
return manager.get(name);
}
public TextureRegion[] getAtlasAnimation(String atlas, String name,
int start, int end) {
TextureAtlas textureAtlas = get(atlas);
TextureRegion[] regions = new TextureRegion[(end + 1) - start];
int index = 0;
for (int i = start; i < end + 1; i++) {
regions[index] = textureAtlas.findRegion(name + i);
index++;
}
return regions;
}
public void playMusic(Music music) {
if (currentMusic != null) {
currentMusic.stop();
currentMusic = null;
}
if (Config.soundOn) {
if (!music.isPlaying())
music.play();
currentMusic = music;
}
}
public void playSound(Sound sound) {
if (Config.soundOn) {
sound.play();
}
}
public void pauseMusic(Music music) {
if (music.isPlaying())
music.pause();
}
public void stopMusic(Music music) {
if (music.isPlaying())
music.stop();
}
public String[] getText(String fileName, String index) {
String text = "";
FileHandle handle = Gdx.files.external(fileName);
if(!handle.exists()) {
L.wtf(fileName+" doesn't exist.");
return new String[0];
}
text = handle.readString();
String part = "";
ArrayList<String> stringArray = new ArrayList<String>();
for (int i = 0; i < text.length(); i++) {
if (text.charAt(i) != '\n') {
part += text.charAt(i);
} else {
stringArray
.add(new String(part.substring(0, part.length() - 1)));
part = "";
}
if (i >= text.length() - 1) {
stringArray.add(new String(part));
}
}
boolean start = false;
ArrayList<String> contents = new ArrayList<String>();
for (int i = 0; i < stringArray.size(); i++) {
if (start && stringArray.get(i).equals("#end")) {
break;
}
if (start) {
contents.add(stringArray.get(i));
}
if (stringArray.get(i).equals(index)) {
start = true;
}
}
return contents.toArray(new String[contents.size()]);
}
public void setText(String fileName, String index, String[] contents) {
BufferedWriter out = null;
try {
out = new BufferedWriter(new OutputStreamWriter(Gdx.files.external(fileName).write(false)));
out.write(index);
out.newLine();
for (int i = 0; i < contents.length; i++) {
out.write(contents[i]);
out.newLine();
}
out.write("#end");
out.newLine();
out.close();
} catch (Throwable e) {
L.wtf("ERROR SAVING IN TEXT FILE");
e.printStackTrace();
} finally {
try {
if (out != null)
out.close();
} catch (IOException e) {
}
}
}
public void dispose() {
manager.dispose();
}
}